<?php
namespace SisGG\FinalBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraint as Assert;

/**
 * @ORM\Entity
 */
class CategoriaProductoVenta implements \Serializable
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORM\Column(type="string",unique=true)
     */
    protected $nombre;
    
    /**
     * @ORM\OneToMany(targetEntity="ProductoVenta", mappedBy="categoria")
     */
    private $productoVenta;
    /**
     * @ORM\OneToMany(targetEntity="CategoriaProductoVenta", mappedBy="padre")
     */
    private $hijo;

    /**
     * @ORM\ManyToOne(targetEntity="CategoriaProductoVenta", inversedBy="hijo")
     * @ORM\JoinColumn(name="hijo_id", referencedColumnName="id")
     */
    private $padre;
    
    /**
     * @return string
     */
    public function serialize()
    {
      return serialize($this->id);
    }

    /**
     * @param string $data
     */
    public function unserialize($data)
    {
      $this->id = unserialize($data);
    }
    
    public function __toString() {
        return $this->nombre;
    }
    
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->productoVenta = new \Doctrine\Common\Collections\ArrayCollection();
        $this->hijo = new \Doctrine\Common\Collections\ArrayCollection();
    }
    
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return CategoriaProductoVenta
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    
        return $this;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Add productoVenta
     *
     * @param SisGG\FinalBundle\Entity\ProductoVenta $productoVenta
     * @return CategoriaProductoVenta
     */
    public function addProductoVenta(\SisGG\FinalBundle\Entity\ProductoVenta $productoVenta)
    {
        $this->productoVenta[] = $productoVenta;
    
        return $this;
    }

    /**
     * Remove productoVenta
     *
     * @param SisGG\FinalBundle\Entity\ProductoVenta $productoVenta
     */
    public function removeProductoVenta(\SisGG\FinalBundle\Entity\ProductoVenta $productoVenta)
    {
        $this->productoVenta->removeElement($productoVenta);
    }

    /**
     * Get productoVenta
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getProductoVenta()
    {
        return $this->productoVenta;
    }

    /**
     * Add hijo
     *
     * @param SisGG\FinalBundle\Entity\CategoriaProductoVenta $hijo
     * @return CategoriaProductoVenta
     */
    public function addHijo(\SisGG\FinalBundle\Entity\CategoriaProductoVenta $hijo)
    {
        $this->hijo[] = $hijo;
    
        return $this;
    }

    /**
     * Remove hijo
     *
     * @param SisGG\FinalBundle\Entity\CategoriaProductoVenta $hijo
     */
    public function removeHijo(\SisGG\FinalBundle\Entity\CategoriaProductoVenta $hijo)
    {
        $this->hijo->removeElement($hijo);
    }

    /**
     * Get hijo
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getHijo()
    {
        return $this->hijo;
    }

    /**
     * Set padre
     *
     * @param SisGG\FinalBundle\Entity\CategoriaProductoVenta $padre
     * @return CategoriaProductoVenta
     */
    public function setPadre(\SisGG\FinalBundle\Entity\CategoriaProductoVenta $padre = null)
    {
        $this->padre = $padre;
    
        return $this;
    }

    /**
     * Get padre
     *
     * @return SisGG\FinalBundle\Entity\CategoriaProductoVenta 
     */
    public function getPadre()
    {
        return $this->padre;
    }
}